package com.itfreer.file.service;

import java.util.List;
import java.util.Map;

/**
 * 定义对象管理接口
 */
public interface IObjectManageService {
	
	/**
	 * 对象是否存在
	 * @param bucketName	存储块名称
	 * @param objectKey		对象名称主键
	 */
	boolean doesObjectExist(String bucketName, String objectKey);
	
	/**
	 * 获取对象名称
	 * @param bucketName	存储块名称
	 * @param prefix		限定返回的object key必须以prefix作为前缀
	 * @param marker		设定结果从marker之后按字母排序的第一个开始返回
	 * @param maxKeys		限定此次返回object的最大数，如果不设定，默认为100，max-keys取值不能大于1000
	 * @return
	 */
	List<Map<String, Object>> listObjects(String bucketName, String prefix, String marker, Integer maxKeys);
	
	/**
	 * 删除对象
	 * @param bucketName	存储块名称
	 * @param objectKey		对象名称主键
	 */
	void deleteObject(String bucketName, String objectKey);
	
	/**
	 * 删除多个对象
	 * @param bucketName	存储块名称
	 * @param keys			对象名称主键
	 * @return
	 */
	void deleteObjects(String bucketName, List<String> keys);
	
	/**
	 * 复制对象
	 * @param sourceBucketName			源存储块名称
	 * @param sourceKey					源对象名称主键
	 * @param destinationBucketName		目标储块名称
	 * @param destinationKey			目标对象名称主键
	 * @return
	 */
	void copyObject(String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey);
}
